package com.nowcoder.community.dao;

import com.nowcoder.community.entity.DiscussPost;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface DiscussPostMapper {
    /**
     * 分页查询所有帖子
     * @param userId    用户id，可选参数
     * @param offset    起始页
     * @param limit     每页记录数
     * @param orderMode 排序模式：0-默认；1-热度
     * @return
     */
    List<DiscussPost> selectDiscussPosts(int userId, int offset, int limit, int orderMode);

    /**
     * 查询帖子总数
     * @param userId    用户id
     * @return
     */
    int selectDiscussPostRows(@Param("userId") int userId);

    /**
     * 插入一条帖子
     * @param discussPost   帖子对象
     * @return              查询结果(影响的行数)
     */
    int insertDiscussPost(DiscussPost discussPost);

    /**
     * 根据帖子 id 查询帖子
     * @param discussId 帖子id
     * @return          帖子对象
     */
    DiscussPost selectDiscussPostById(int discussId);

    /**
     * 更新指定id帖子的评论数量
     * @param id     帖子id
     * @param commentCount  评论数量
     * @return              #
     */
    int updateCommentCount(int id, int commentCount);

    /**
     * 修改帖子类型：正常、置顶
     * @param id    帖子ID
     * @param type  修改后的类型
     * @return      #
     */
    int updateType(int id, int type);

    /**
     * 修改帖子状态：正常、精华、拉黑
     * @param id        帖子ID
     * @param status    修改后的状态
     * @return          #
     */
    int updateStatus(int id, int status);

    /**
     * 更新帖子分数
     * @param id    帖子ID
     * @param score 更新后的分数
     * @return      #
     */
    int updateScore(int id, double score);
}
